<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        //新数据类型
        let s = Symbol();
        // console.log(s,typeof s);

        // 方法一：直接使用Symbol构造器，可接收一个字符串参数作为Symbol的描述 
        // 加上描述有利于我们区分Symbol值。
        let s2 = Symbol('ArimaMisaki');
        let s3 = Symbol('ArimaMisaki');
        console.log(s2 === s3);//不同，每个Symbol有唯一标识，括号内不过是描述罢了

        // 方法二：使用Symbol.for()，其会在已有的Symbol中搜索是否存在相同描述的Symbol
        // 存在则返回值，不存在则新建一个Symbol
        let s4 = Symbol.for('SB');
        let s5 = Symbol.for('SB');
        console.log(s4 === s5);

        //Symbol不能和其他类型做运算
        let result = s + 100;
        console.log(result);

        // 应用：Symbol常用作对象的私有变量
        let s6 = Symbol('s6');
        console.log(s6);
        let obj = {};
        obj[s6] = 'ArimaMisaki'// 使用Symbol定义的对象中的变量，取值要用中括号
    </script>
</body>

</html>